I am an Assistant Professor in the Electrical Engineering and Computer Sciences department at UC Berkeley. Prior to joining Berkeley, I completed my PhD at EPFL in Switzerland and my bachelor’s degree at IIT Bombay.

I am a computer systems researcher, and my work draws on insights from a broad set of domains, including operating systems, networking, computer architecture, and, more recently, AI. My work has received several awards, including the ACM SIGOPS Dennis M. Ritchie Award, the Eurosys Roger Needham PhD Award, and the Dimitris N. Chorafas Award. More details can be found in my CV.

I am actively looking for talented and ambitious students to join my group! For students already at Berkeley, the best way to contact me is via email. For students seeking to join Berkeley, please refer to the Berkeley EECS Graduate Admissions page and mention my name on your application. I will be hiring several PhD students in the upcoming admissions cycle (2025-26).

Active Research Directions

Below are a few research topics I am currently working on. A full list of my publications can be found here.

Systems Support for Learned Policies: What systems support is needed for agents to efficiently learn new system heuristics across a variety of domains? We're currently focusing on building fast, high-fidelity simulators that allow agents to rapidly iterate over candidate solutions.
Designing an AI-Native System Stack: What does an AI-native system stack that supports dynamic, agent-driven optimization by default look like? We're exploring this question across multiple layers of the system stack; from CPU hardware to OS schedulers to distributed systems for AI.
Fast, Flexible, and Practical OS Kernel Extensions: Given that the Linux is increasingly becoming an eBPF-powered microkernel, what programming model best supports safe and expressive kernel extensions? Can these extensions go beyond policy tweaks and enable architectural redesigns of the kernel itself?
Building Robust and Provably Correct Networked Systems: As systems scale exponentially and become increasingly tightly-coupled, can we design pro-active mechanisms for ensuring reliability in the face of failures? How should we best combine formal and semi-formal methods to design such mechanisms?